home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Shareware / IDimager Personal 4.2.0.3 / setup_IDimager_Personal_V4.exe / {app} / web / modules / showimage.psc < prev    next >
Text File  |  2008-06-27  |  16KB  |  337 lines

  1. %code
  2.  
  3. %include storeddata.inc %/include
  4. %include resulttable.inc %/include
  5.  
  6.   function CachedProperty (AItem: TCatalogItem; AXMPProperty: String): WideString;
  7.   begin
  8.     result := ToWideString ('');
  9.     Catalog.FindXMPCachedTagValueForItem (AItem, AXMPProperty, result);
  10.     result := Trim(result);
  11.   end;
  12.  
  13.   function EmbeddedFlash (AItem: TCatalogItem): WideString;
  14.   const
  15.     cWidth  = 640;
  16.     cHeight = 510;
  17.   begin
  18.     ALink := '%var:PageOffset/loadimage.psc?image=' + AItem.GUID + '&original=1';
  19.  
  20.     result := toWideString('');
  21.  
  22.     result := result + '<OBJECT CLASSID="CLSID:D27CDB6E-AE6D-11cf-96B8-444553540000"';
  23.     result := result + 'CODEBASE="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,22,0" ID="FVS" Width="' + IntToStr(cWidth) + '" Height="' + IntToStr(cHeight) + '">';
  24.     result := result + '<PARAM NAME="movie" VALUE="' + ALink + '">';
  25.     result := result + '<PARAM NAME="bgcolor" VALUE="#303030">';
  26.     result := result + '<PARAM NAME="loop" VALUE="false">';
  27.     result := result + '<PARAM NAME="play" VALUE="false">';
  28.     result := result + '<PARAM NAME="quality" VALUE="high">';
  29.     result := result + '<EMBED NAME="FVS" SRC="' + ALink + '" BGCOLOR="#303030" LOOP="false" PLAY="false"';
  30.     result := result + 'WIDTH="' + IntToStr(cWidth) + '" HEIGHT="' + IntToStr(cHeight) + '" TYPE="application/x-shockwave-flash" pluginspage=http://www.macromedia.com/go/getflashplayer">';
  31.     result := result + '</EMBED>';
  32.     result := result + '</OBJECT>';
  33.   end;
  34.   
  35.   function EmbeddedQuickTime (AItem: TCatalogItem): WideString;
  36.   const
  37.     cWidth  = 320;
  38.     cHeight = 300;
  39.   var
  40.     ALink: WideString;
  41.   begin
  42.     ALink := '%var:PageOffset/loadimage.psc?image=' + AItem.GUID + '&original=1';
  43.  
  44.     result := toWideString('');
  45.  
  46.     result := result + '<object class="embeddedobject" width="' + IntToStr(cWidth) + '" height="' + IntToStr(cHeight) + '" classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab">';
  47.     result := result + CrLf + '<param name="src" value="' + ALink + '">';
  48.     result := result + CrLf + '<param name="autoplay" value="false">';
  49.     result := result + CrLf + '<param name="controller" value="true">';
  50.     result := result + CrLf + '<embed src="' + ALink + '" width="' + IntToStr(cWidth) + '" height="' + IntToStr(cHeight) + '"';
  51.     result := result + CrLf + 'autoplay="false" controller="true"';
  52.     result := result + CrLf + 'pluginspage="http://www.apple.com/quicktime/download/">';
  53.     result := result + CrLf + '</embed>';
  54.     result := result + CrLf + '</object>';
  55.   end;
  56.  
  57.   function EmbeddedWindowsMedia (AItem: TCatalogItem): WideString;
  58.   const
  59.     cWidth  = 480;
  60.     cHeight = 360;
  61.   var
  62.     ALink: WideString;
  63.   begin
  64.     result := toWideString('');
  65.  
  66.     ALink := '%var:PageOffset/loadimage.psc?image=' + AItem.GUID + '&original=1';
  67.  
  68.     result := result + CrLf + '<OBJECT class="embeddedobject" ID="mediaplayer"';
  69.     result := result + CrLf + '  WIDTH    ="' + IntToStr(cWidth) + '"';
  70.     result := result + CrLf + '  HEIGHT    ="' + IntToStr(cHeight) + '"';
  71.     result := result + CrLf + '  CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"';
  72.     result := result + CrLf + '  CODEBASE="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"';
  73.     result := result + CrLf + '  STANDBY="Loading Microsoft Windows Media Player components..."';
  74.     result := result + CrLf + '  TYPE="application/x-oleobject" VIEWASTEXT/>';
  75.     result := result + CrLf + '<PARAM name="autostart" value="False"/>';
  76.     result := result + CrLf + '<PARAM name="url" value="' + ALink + '"/>';
  77.     result := result + CrLf + '<PARAM name="wmode" value="transparent"/>';
  78.     result := result + CrLf + '<PARAM name="uimode" value="full"/>';
  79.     result := result + CrLf + '<PARAM name="loop" value="false"/>';
  80.     result := result + CrLf + '</OBJECT>';
  81.  
  82.     result := result + CrLf + '<script language="javascript" type="text/javascript">';
  83.     result := result + CrLf + '{';
  84.     result := result + CrLf + 'var videofile = "' + ALink + '";';
  85.  
  86.     result := result + CrLf + 'var videolink = location.href;';
  87.     result := result + CrLf + 'var file = videolink.indexOf( "file://");';
  88.  
  89.     result := result + CrLf + 'var localhost = videolink.indexOf( "file://localhost");';
  90.  
  91.     result := result + CrLf + 'if ( file > -1 )';
  92.     result := result + CrLf + '{';
  93.     result := result + CrLf + 'if(localhost > -1)';
  94.     result := result + CrLf + '  videolink = videolink.substring( file + 17);';
  95.     result := result + CrLf + 'else';
  96.     result := result + CrLf + '  videolink = videolink.substring( file + 8 );';
  97.  
  98.     result := result + CrLf + 'while( videolink.lastIndexOf( "%20" ) != -1 )';
  99.     result := result + CrLf + '{';
  100.     result := result + CrLf + '  videolink = videolink.replace( "%20", " " );';
  101.     result := result + CrLf + '}';
  102.     result := result + CrLf + 'var lastslash = videolink.lastIndexOf( "/");';
  103.  
  104.     result := result + CrLf + 'if ( lastslash > -1 )';
  105.     result := result + CrLf + '  videolink = videolink.substring( 0, lastslash );';
  106.     result := result + CrLf + 'if ( lastslash > -1 )';
  107.     result := result + CrLf + '  videolink = videolink.substring( 0, lastslash );';
  108.  
  109.     result := result + CrLf + 'videolink = videolink + "/" + videofile;';
  110.     result := result + CrLf + '}';
  111.     result := result + CrLf + 'else';
  112.     result := result + CrLf + '{';
  113.     result := result + CrLf + '  videolink = videofile;';
  114.     result := result + CrLf + '}';
  115.  
  116.     result := result + CrLf + 'document.write( "<EMBED NAME   =\"EmbedmediaPlayer\"");';
  117.     result := result + CrLf + 'document.write( "TYPE   =\"application/x-mplayer2\" ");';
  118.     result := result + CrLf + 'document.write( "SRC    =\"" + videolink + "\"");';
  119.     result := result + CrLf + 'document.write( "autostart =\"0\" ");';
  120.     result := result + CrLf + 'document.write( "ShowStatusBar =\"1\" ");';
  121.     result := result + CrLf + 'document.write( "ShowControls  =\"1\" ");';
  122.     result := result + CrLf + 'document.write( "WIDTH  =\"' + IntToStr(cWidth) + '\" ");';
  123.     result := result + CrLf + 'document.write( "HEIGHT  =\"' + IntToStr(cHeight) + '\">");';
  124.     result := result + CrLf + 'document.write( "</EMBED>" );';
  125.  
  126.     result := result + CrLf + '}';
  127.     result := result + CrLf + '</script>';
  128.  
  129.     result := result + CrLf + '<noscript>';
  130.     result := result + CrLf + '<EMBED NAME   ="EmbedmediaPlayer"';
  131.     result := result + CrLf + 'TYPE   ="application/x-mplayer2"';
  132.     result := result + CrLf + 'SRC    ="' + ALink + '"';
  133.     result := result + CrLf + 'WIDTH  ="' + IntToStr(cWidth) + '"';
  134.     result := result + CrLf + 'HEIGHT  ="' + IntToStr(cHeight) + '">';
  135.     result := result + CrLf + '</EMBED>';
  136.     result := result + CrLf + '</noscript>';
  137.   end;
  138.  
  139.   function AddItemImage (AItem: TCatalogItem): WideString;
  140.   begin
  141.     result := toWideString('');
  142.  
  143.     if WideSameText(WideExtractFileExt (AItem.FileName), '.mov') or
  144.        WideSameText(WideExtractFileExt (AItem.FileName), '.3gp') 
  145.     then
  146.       result := result + EmbeddedQuickTime (AItem)
  147.     else if (
  148.               WideSameText(WideExtractFileExt (AItem.FileName), '.swf') or
  149.               WideSameText(WideExtractFileExt (AItem.FileName), '.flv')
  150.             )
  151.     then
  152.       result := result + EmbeddedFlash (AItem)
  153.     else if (
  154.               WideSameText(WideExtractFileExt (AItem.FileName), '.avi') or
  155.               WideSameText(WideExtractFileExt (AItem.FileName), '.mpg') or
  156.               WideSameText(WideExtractFileExt (AItem.FileName), '.mpeg') or
  157.               WideSameText(WideExtractFileExt (AItem.FileName), '.wmv')
  158.             )
  159.     then
  160.       result := result + EmbeddedWindowsMedia (AItem)
  161.     else
  162.       result := result + '<img src="%var:PageOffset/loadimage.psc?image=' + AItem.GUID + '&size=640" alt="' + AItem.ImageName + '" title="' + AItem.ImageName + '">';
  163.   end;
  164.  
  165. var
  166.   AItems: TCatalogItems;
  167.   AItem, ANextItem, APrevItem: TCatalogItem;
  168.   APage, ANextPage: Integer;
  169.   ALink: String;
  170.   AProps: TCatalogItemProps;
  171.   i: Integer;
  172. begin
  173.   result := toWideString('');
  174.  
  175.   if not FindStoredData (Request.Params.Values['ds'], AItems, False) then
  176.     exit;
  177.  
  178.   APage := 1;
  179.   if IsValidNumberString(Request.Params.Values['page'], False) then
  180.     APage := StrToInt(Request.Params.Values['page']);
  181.   AItem := AItems.Items[APage - 1];
  182.  
  183.   ANextPage := (APage div ThumbCount) + 1;
  184.   if APage mod ThumbCount = 0 then
  185.     ANextPage := ANextPage - 1;
  186.  
  187.   if AItem.Index > 0 then
  188.     APrevItem := AItems.Items[AItem.Index - 1]
  189.   else
  190.     APrevItem := nil;
  191.   if AItem.Index < AItems.Count - 1 then
  192.     ANextItem := AItems.Items[AItem.Index + 1]
  193.   else
  194.     ANextItem := nil;
  195.  
  196.   result := result + '<table class="imageTable" width="100%" height="100%" cellspacing="0" cellpadding="0">';
  197.   if Request.Params.Values['showtitle'] <> '0' then
  198.   begin
  199.     result := result + '  <tr>';
  200.     result := result + '    <td height="30" valign="center">';
  201.  
  202.     result := result + '<table class="imageTableHeader" width="100%" cellspacing="0" cellpadding="0"><tr>';
  203.     result := result + '<td>';
  204.  
  205.     result := result + '<div id="editDetails">' + 
  206.                        '<small>(loading...)<br/> </small>'+
  207.                        '</div>' +
  208.                        '';
  209.  
  210.     result := result + '</td>';
  211.     result := result + '</tr></table>';
  212.  
  213.     result := result + '    </td>';
  214.     result := result + '  </tr>';
  215.   end;
  216.  
  217.   result := result + '  <tr>';
  218.   result := result + '    <td align="center">';
  219.  
  220.   ALink := 'javascript:getHTML(''%var:PageOffset/./modules/resulttable.psc'', ''thumbs'', ''ds=' + Request.Params.Values['ds'] + '&GUID=' + AItems.GUID + '&Page=' + IntToStr(ANextPage) + '&count=' + Request.Params.Values['count'] + '&thumbsize=' + Request.Params.Values['thumbsize'] + ''')';
  221.   result := result + '<div id="imageNavBack" class="navimage">';
  222.   result := result + '<a href="' + ALink + '">' + 
  223.                      '<img src="%var:PageOffset/images/trans-back.png" alt="back to thumbs..." title="back to thumbs...">' +
  224.                      '</a>';
  225.  
  226.   result := result + '</div>';
  227.  
  228.   result := result + '<div id="imageNavPrev" class="navimage">';
  229.   if APrevItem <> nil then
  230.   begin
  231.     ALink := 'javascript:getHTMLChain(' + 
  232.                              '[' + 
  233.                              '  [''%var:PageOffset/./modules/showimage.psc'', ''' + AjaxContainer + ''', ''ds=' + Request.Params.Values['ds'] + '&GUID=' + AItems.GUID + '&Page=' + IntToStr(APrevItem.Index + 1) + '&count=' + Request.Params.Values['count'] + '&thumbsize=' + Request.Params.Values['thumbsize'] + '''], ' +
  234.                              '  [''%var:PageOffset/./modules/showimagedetails.psc'', ''editDetails'', ''ds=' + Request.Params.Values['ds'] + '&GUID=' + AItems.GUID + '&Page=' + IntToStr(APrevItem.Index + 1) + '''], ' +
  235.                              '  [''%var:PageOffset/./modules/imagecomments.psc'', ''comments'', ''ds=' + Request.Params.Values['ds'] + '&GUID=' + AItems.GUID + '&Page=' + IntToStr(APrevItem.Index + 1) + '''] ' +
  236.                              ']' + 
  237.                ')';
  238.  
  239.     result := result + '<a href="' + ALink + '">' + 
  240.                        '<img src="%var:PageOffset/images/trans-prev.png" alt="previous image..." title="previous image...">' +
  241.                        '</a>';
  242.   end
  243.   else
  244.     result := result + '<img src="%var:PageOffset/images/trans-blank.png">'
  245.   result := result + '</div>';
  246.  
  247.   result := result + '<div id="imageNavNext" class="navimage">';
  248.   if ANextItem <> nil then
  249.   begin
  250.     ALink := 'javascript:getHTMLChain(' + 
  251.                              '[' + 
  252.                              '  [''%var:PageOffset/./modules/showimage.psc'', ''' + AjaxContainer + ''', ''ds=' + Request.Params.Values['ds'] + '&GUID=' + AItems.GUID + '&Page=' + IntToStr(ANextItem.Index + 1) + '&count=' + Request.Params.Values['count'] + '&thumbsize=' + Request.Params.Values['thumbsize'] + '''], ' +
  253.                              '  [''%var:PageOffset/./modules/showimagedetails.psc'', ''editDetails'', ''ds=' + Request.Params.Values['ds'] + '&GUID=' + AItems.GUID + '&Page=' + IntToStr(ANextItem.Index + 1) + '''], ' +
  254.                              '  [''%var:PageOffset/./modules/imagecomments.psc'', ''comments'', ''ds=' + Request.Params.Values['ds'] + '&GUID=' + AItems.GUID + '&Page=' + IntToStr(ANextItem.Index + 1) + '''] ' +
  255.                              ']' + 
  256.                ')';
  257.  
  258.     result := result + '<a href="' + ALink + '">' + 
  259.                        '<img src="%var:PageOffset/images/trans-next.png" alt="next image..." title="next image...">' +
  260.                        '</a>';
  261.   end
  262.   else
  263.     result := result + '<img src="%var:PageOffset/images/trans-blank.png">'
  264.   result := result + '</div>';
  265.  
  266.   result := result + ' <br/>';
  267.   result := result + '<div id="image">';
  268.   ALink := 'javascript:getHTML(''%var:PageOffset/./modules/resulttable.psc'', ''thumbs'', ''ds=' + Request.Params.Values['ds'] + '&GUID=' + AItems.GUID + '&Page=' + IntToStr(ANextPage) + '&count=' + Request.Params.Values['count'] + '&thumbsize=' + Request.Params.Values['thumbsize'] + ''')';
  269.   result := result + '<a href="' + ALink + '">';
  270.   result := result + AddItemImage (AItem);
  271.   result := result + '</a>';
  272.   result := result + '</div>';
  273.  
  274.   result := result + '    </td>';
  275.   result := result + '  </tr>';
  276.  
  277.   if Request.Params.Values['showlabels'] <> '0' then
  278.   begin
  279.     result := result + '  <tr>';
  280.     result := result + '    <td align="center">';
  281.  
  282.  
  283.     result := result + '<div id="imgLabels">';
  284.  
  285.     AProps := TCatalogItemProps.Create (TCatalogItemProp, '');
  286.     Catalog.EnumPropsForItem (AItem, AProps, False, False);
  287.     Catalog.PathNameForProps (AProps, ' :: ', True);
  288.     AProps.Sort('PropName', stAscending);
  289.  
  290.     for i := 0 to AProps.Count - 1 do
  291.     begin
  292.       result := result + '  | ' + 
  293.                          '<a href="javascript:getHTML(''%var:PageOffset/./modules/labelimages.psc'', ''thumbs'', ''GUID=' + AProps.Items[i].GUID + ''')" title="' + AProps.Items[i].Text + '">' +
  294.                          '<img src="images/labeltag.png"> ' + 
  295.                          AProps.Items[i].PropName + 
  296.                          '</a>' + 
  297.                          '';
  298.     end;
  299.     if AProps.Count > 0 then
  300.       result := result + '  |  ';
  301.     AProps.Free;
  302.  
  303.     result := result + '</div>';
  304.  
  305.     if IsAdmin then
  306.     begin
  307.       if AItem.MediumLoaded then
  308.       begin
  309.         if WideFileExists(AItem.FileName) then
  310.         begin
  311.           result := result + '<a href="%var:PageOffset/loadimage.psc?image=' + AItem.GUID + '&original=1&download=1" target="_new">' +
  312.                              '<img src="%var:PageOffset/images/download.png" title="download original", alt="download original">' +
  313.                              '</a>' +
  314.                              '';
  315.         end;
  316.       end;
  317.     end;
  318.  
  319.     result := result + '    </td>';
  320.     result := result + '  </tr>';
  321.   end;
  322.  
  323.   result := result + '  <tr>';
  324.   result := result + '    <td align="center">';
  325.   result := result + '      <div id="comments">';
  326.   //result := result + '        (loading...)';
  327.   result := result + '      </div>';
  328.   result := result + '    </td>';
  329.   result := result + '  </tr>';
  330.  
  331.   result := result + '</table>';
  332.  
  333. end;
  334.  
  335. %/code
  336.  
  337.